package seqlist.leetcode;

/**
 * 链表中间节点
 * @author yuisama
 * @date 2022/04/22 20:53
 **/
public class Num876_MiddleOfLink {
    // 1.长度法
//    public ListNode middleNode(ListNode head) {
//        int count = 0;
//        // 遍历链表拿到链表的节点个数
//        for (ListNode x = head;x != null;x = x.next) {
//            count ++;
//        }
//        ListNode middle = head;
//        int middleIndex = count / 2;
//        for (int i = 0; i < middleIndex; i++) {
//            middle = middle.next;
//        }
//        return middle;
//    }
    // 2.快慢指针
    public ListNode middleNode(ListNode head) {
        ListNode low = head;
        ListNode fast = head;
        while (fast != null && fast.next != null) {
            fast = fast.next.next;
            low = low.next;
        }
        return low;
    }
}